Skip to content

GradleFiles project scan should adhere to global root settings#9263

Merged
matthiasblaesing merged 1 commit into
apache:masterfrom
sid-srini:gradle-files-scan-root
Jun 2, 2026
Merged

GradleFiles project scan should adhere to global root settings#9263
matthiasblaesing merged 1 commit into
apache:masterfrom
sid-srini:gradle-files-scan-root

Conversation

@sid-srini
Copy link
Copy Markdown
Contributor

@sid-srini sid-srini commented Mar 12, 2026

Fixed GradleFiles scan for project files to honour the global scan root settings, if any.

Fixed GradleFiles to find parentScript for kotlin script.

  • Added a unit test case for it in GradleFilesTest.

Fixed SimpleFileOwnerQueryImplementation to check for scan root dirs without allowing sibling dirs with the same name prefix.

  • Example: if scan root = "/tmp/app",
    • then "/tmp/application" should not be allowed for scan;
    • while "/tmp/app" and "/tmp/app/src" should remain allowed.

Fixed GradleFilesTest for File comparison on MacOS.

  • Needed due to the presence of "/private" prefix in the canonical path of unix temp folders.

@mbien mbien added Gradle [ci] enable "build tools" tests ci:dev-build [ci] produce a dev-build zip artifact (7 days expiration, see link on workflow summary page) Java [ci] enable extra Java tests (java.completion, java.source.base, java.hints, refactoring.java, form) labels Mar 12, 2026
@apache apache locked and limited conversation to collaborators Mar 12, 2026
@apache apache unlocked this conversation Mar 12, 2026
@lkishalmi lkishalmi self-requested a review March 12, 2026 23:33
@sid-srini
Copy link
Copy Markdown
Contributor Author

Hi @lkishalmi. Please review this when you get a chance. Thank you.

Copy link
Copy Markdown
Contributor

@matthiasblaesing matthiasblaesing left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In general makes sense to me. I left a few inline comments.

Comment thread extide/gradle/src/org/netbeans/modules/gradle/NbGradleProjectFactory.java Outdated
Comment thread extide/gradle/src/org/netbeans/modules/gradle/spi/GradleFiles.java Outdated
@sid-srini
Copy link
Copy Markdown
Contributor Author

Thank you @matthiasblaesing for your review and feedback.
I've added a commit incorporating the feedback, fix and comments. Please review them. Thanks a lot.

@mbien mbien added this to the NB31 milestone May 14, 2026
@sid-srini sid-srini force-pushed the gradle-files-scan-root branch from af01fc0 to 53c3535 Compare May 19, 2026 12:34
@sid-srini
Copy link
Copy Markdown
Contributor Author

I've rebased this to the current master which includes post NB30 changes.
@matthiasblaesing - Kindly re-trigger the CI checks and review the changes. Thanks a lot.

Copy link
Copy Markdown
Contributor

@matthiasblaesing matthiasblaesing left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks sane to me. Thank you.

@matthiasblaesing
Copy link
Copy Markdown
Contributor

@sid-srini would you please squash the commits?

Fixed GradleFiles scan for project files to honour the global scan root
settings, if any.
- Similar to that in projectapi SimpleFileOwnerQueryImpl.
- GradleFiles needs to necessarily traverse the parent directory
  hierarchy to find the root project settings.
- Further, the project detection needs to give precedence to maven
  projects also defined for the same directory, which has a similar
  hierarchy traversal requirement introduced in apache#1280.
- Note that future changes in logic should be done in both the classes.

Fixed GradleFiles to find parentScript for kotlin script.
- Added a unit test case for it in GradleFilesTest.

Fixed SimpleFileOwnerQueryImplementation to check for scan root dirs
without allowing sibling dirs with the same name prefix.
- Example: if scan root = "/tmp/app",
    - then "/tmp/application" should not be allowed for scan;
    - while "/tmp/app" and "/tmp/app/src" should remain allowed.

Fixed the SimpleFileOwnerQueryImplementation.separatePaths() method
to not trim() the split paths and only ignore completely blank paths.

Fixed GradleFilesTest for File comparison on MacOS.
- Needed due to the presence of "/private" prefix in the canonical path
  of unix temp folders.

Unit tests are split into 2 classes:
- GradleFilesWithScanRootTest only runs the GradleFilesTest
  with the project limitScanRoot and forbiddenFolders
  properties set.
- GradleFilesScanRootTest contains only the functionality of the
  scan-root and forbidden folders specifically.
    - Only a single JUnit @test can be used here since the static
      initialization in @before must be done once only.
    - This means the test root folder must not change between tests.
    - The actual gradle project is now a grandchild in the tree of the
      test root dir.

Signed-off-by: Siddharth Srinivasan <siddharth.srinivasan@oracle.com>
@sid-srini sid-srini force-pushed the gradle-files-scan-root branch from 53c3535 to 754446c Compare May 31, 2026 11:48
@sid-srini
Copy link
Copy Markdown
Contributor Author

Thank you @matthiasblaesing for your review.

@sid-srini would you please squash the commits?

I've pushed the squashed commit now.

@matthiasblaesing
Copy link
Copy Markdown
Contributor

Thanks - Merging

@matthiasblaesing matthiasblaesing merged commit 0d9ecf3 into apache:master Jun 2, 2026
105 of 108 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci:dev-build [ci] produce a dev-build zip artifact (7 days expiration, see link on workflow summary page) Gradle [ci] enable "build tools" tests Java [ci] enable extra Java tests (java.completion, java.source.base, java.hints, refactoring.java, form)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants